package com.demo.java.OD601_650.OD611;

import java.util.Scanner;
import java.util.*;
import java.util.stream.Collectors;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【数组去重和排序(B卷-100分)】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146592478
 */
public class OdMain {
    public static void main(String[] args) {
        // 处理输入
        Scanner in = new Scanner(System.in);
        // 转为数组
        List<Integer> nums = Arrays.stream(in.nextLine().split(","))
                .map(Integer::parseInt)
                .collect(Collectors.toList());

        // 使用LinkedHashMap，保证元素的顺序，同时统计每个元素的出现次数
        LinkedHashMap<Integer, Integer> map = new LinkedHashMap<>();
        for (int i = 0; i < nums.size(); i++) {
            map.put(nums.get(i), map.getOrDefault(nums.get(i), 0) + 1);
        }

        // 将map的元素转为LinkedList，并按照出现次数进行排序
        LinkedList<Map.Entry<Integer, Integer>> list = new LinkedList<>(map.entrySet());
        list.sort((a, b) -> a.getValue() - b.getValue()); // 按出现次数升序排序

        // 输出排序后的结果
        for (int i = 0; i < list.size(); i++) {
            Map.Entry<Integer, Integer> entry = list.get(i);
            if (i != list.size() - 1) {
                System.out.print(entry.getKey() + ",");  // 不是最后一个元素，后面加逗号
            } else {
                System.out.println(entry.getKey());  // 最后一个元素输出换行
            }
        }
    }
}